/**
 * 通用方法封装处理
 * Copyright (c) 2019 ruoyi
 */
$(function () {

	//  layer扩展皮肤
	if (window.layer !== undefined) {
		layer.config({
			extend: 'moon/style.css',
			skin: 'layer-ext-moon'
		});
	}

	// 回到顶部绑定
	if ($.fn.toTop !== undefined) {
		$('#scroll-up').toTop();
	}

	// // select2复选框事件绑定
	// if ($.fn.select2 !== undefined) {
	//     $.fn.select2.defaults.set( "theme", "bootstrap" );
	// 	$("select.form-control:not(.noselect2)").each(function () {
	// 		$(this).select2().on("change", function () {
	// 			$(this).valid();
	// 		})
	// 	})
	// }

	// iCheck单选框及复选框事件绑定
	if ($.fn.iCheck !== undefined) {
		$(".check-box:not(.noicheck),.radio-box:not(.noicheck)").each(function () {
			$(this).iCheck({
				checkboxClass: 'icheckbox-blue',
				radioClass: 'iradio-blue',
			})
		})
	}

	// 气泡弹出框特效（移到元素时）
	$(document).on("mouseenter", '.table [data-toggle="popover"]', function () {
		var _this = this;
		$(this).popover("show");
		$(".popover").on("mouseleave", function () {
			$(_this).popover('hide');
		});
	})

	// 气泡弹出框特效（离开元素时）
	$(document).on("mouseleave", '.table [data-toggle="popover"]', function () {
		var _this = this;
		setTimeout(function () {
			if (!$(".popover:hover").length) $(_this).popover("hide");
		}, 100);
	});

	// 取消回车自动提交表单
	$(document).on("keypress", ":input:not(textarea):not([type=submit])", function (event) {
		if (event.keyCode == 13) {
			event.preventDefault();
		}
	});

	// laydate 时间控件绑定
	if ($(".select-time").length > 0) {
		layui.use('laydate', function () {
			var laydate = layui.laydate;
			var startDate = laydate.render({
				elem: '#startTime',
				max: $('#endTime').val(),
				theme: '#3c8dbc',
				trigger: 'click',
				done: function (value, date) {
					// 结束时间大于开始时间
					if (value !== '') {
						endDate.config.min.year = date.year;
						endDate.config.min.month = date.month - 1;
						endDate.config.min.date = date.date;
					} else {
						endDate.config.min.year = '';
						endDate.config.min.month = '';
						endDate.config.min.date = '';
					}
				}
			});
			var endDate = laydate.render({
				elem: '#endTime',
				min: $('#startTime').val(),
				theme: '#3c8dbc',
				trigger: 'click',
				done: function (value, date) {
					// 开始时间小于结束时间
					if (value !== '') {
						startDate.config.max.year = date.year;
						startDate.config.max.month = date.month - 1;
						startDate.config.max.date = date.date;
					} else {
						startDate.config.max.year = '2099';
						startDate.config.max.month = '12';
						startDate.config.max.date = '31';
					}
				}
			});
		});
	}

	// laydate time-input 时间控件绑定
	if ($(".time-input").length > 0) {
		layui.use('laydate', function () {
			var com = layui.laydate;
			$(".time-input").each(function (index, item) {
				var time = $(item);
				// 控制控件外观
				var type = time.attr("data-type") || 'date';
				// 控制回显格式
				var format = time.attr("data-format") || 'yyyy-MM-dd';
				// 控制日期控件按钮
				var buttons = time.attr("data-btn") || 'clear|now|confirm', newBtnArr = [];
				// 日期控件选择完成后回调处理
				var callback = time.attr("data-callback") || {};
				if (buttons) {
					if (buttons.indexOf("|") > 0) {
						var btnArr = buttons.split("|"), btnLen = btnArr.length;
						for (var j = 0; j < btnLen; j++) {
							if ("clear" === btnArr[j] || "now" === btnArr[j] || "confirm" === btnArr[j]) {
								newBtnArr.push(btnArr[j]);
							}
						}
					} else {
						if ("clear" === buttons || "now" === buttons || "confirm" === buttons) {
							newBtnArr.push(buttons);
						}
					}
				} else {
					newBtnArr = ['clear', 'now', 'confirm'];
				}
				com.render({
					elem: item,
					theme: '#3c8dbc',
					trigger: 'click',
					type: type,
					format: format,
					btns: newBtnArr,
					done: function (value, data) {
						if (typeof window[callback] != 'undefined'
							&& window[callback] instanceof Function) {
							window[callback](value, data);
						}
					}
				});
			});
		});
	}

	// tree 关键字搜索绑定
	if ($("#keyword").length > 0) {
		$("#keyword").bind("focus", function focusKey(e) {
			if ($("#keyword").hasClass("empty")) {
				$("#keyword").removeClass("empty");
			}
		}).bind("blur", function blurKey(e) {
			if ($("#keyword").val() === "") {
				$("#keyword").addClass("empty");
			}
			$.tree.searchNode(e);
		}).bind("input propertychange", $.tree.searchNode);
	}

	// tree表格树 展开/折叠
	var expandFlag;
	$("#expandAllBtn").click(function () {
		var dataExpand = $.common.isEmpty(table.options.expandAll) ? true : table.options.expandAll;
		expandFlag = $.common.isEmpty(expandFlag) ? dataExpand : expandFlag;
		if (!expandFlag) {
			$.bttTable.bootstrapTreeTable('expandAll');
		} else {
			$.bttTable.bootstrapTreeTable('collapseAll');
		}
		expandFlag = expandFlag ? false : true;
	})

	// 按下ESC按钮关闭弹层
	$('body', document).on('keyup', function (e) {
		if (e.which === 27) {
			$.modal.closeAll();
		}
	});

	$('body').off("click").on("click", 'img', function (event) {
		var src = $(this).attr('src');
		if (src.indexOf('data:image/') === -1) {
			var uri = new URL(src);
			src = uri.origin + uri.pathname;
		}
		var json = {
			"title": "",
			"id": (new Date).getTime(),
			"start": 0,
			"data": [{"alt": "", "pid": 666, "src": src, "thumb": ""}]
		};
		layer.photos({
			photos: json
			, anim: 5 //0-6的选择，指定弹出图片动画类型，默认随机（请注意，3.0之前的版本用shift参数）
		});
		event.preventDefault();
		return false;
	});
});

(function ($) {
	'use strict';
	$.fn.toTop = function (opt) {
		var elem = this;
		var win = $(window);
		var doc = $('html, body');
		var options = $.extend({
			autohide: true,
			offset: 50,
			speed: 500,
			position: true,
			right: 5,
			bottom: 5
		}, opt);
		elem.css({
			'cursor': 'pointer'
		});
		if (options.autohide) {
			elem.css('display', 'none');
		}
		if (options.position) {
			elem.css({
				'position': 'fixed',
				'right': options.right,
				'bottom': options.bottom,
			});
		}
		elem.click(function () {
			doc.animate({
				scrollTop: 0
			}, options.speed);
		});
		win.scroll(function () {
			var scrolling = win.scrollTop();
			if (options.autohide) {
				if (scrolling > options.offset) {
					elem.fadeIn(options.speed);
				} else elem.fadeOut(options.speed);
			}
		});
	};
})(jQuery);

/** 刷新选项卡 */
var refreshItem = function () {
	var topWindow = $(window.parent.document);
	var currentId = $('.page-tabs-content', topWindow).find('.active').attr('data-id');
	var target = $('.RuoYi_iframe[data-id="' + currentId + '"]', topWindow);
	var url = target.attr('src');
	target.attr('src', url).ready();
}

/** 关闭选项卡 */
var closeItem = function (dataId) {
	if (window.frameElement == null) {
		window.close();
		return;
	}
	var topWindow = $(window.parent.document);
	if ($.common.isNotEmpty(dataId)) {
		window.parent.$.modal.closeLoading();
		// 根据dataId关闭指定选项卡
		$('.menuTab[data-id="' + dataId + '"]', topWindow).remove();
		// 移除相应tab对应的内容区
		$('.mainContent .RuoYi_iframe[data-id="' + dataId + '"]', topWindow).remove();
		return;
	}
	var panelUrl = window.frameElement.getAttribute('data-panel');
	$('.page-tabs-content .active i', topWindow).click();
	if ($.common.isNotEmpty(panelUrl)) {
		$('.menuTab[data-id="' + panelUrl + '"]', topWindow).addClass('active').siblings('.menuTab').removeClass('active');
		$('.mainContent .RuoYi_iframe', topWindow).each(function () {
			if ($(this).data('id') == panelUrl) {
				$(this).show().siblings('.RuoYi_iframe').hide();
				return false;
			}
		});
	}
}

/** 创建选项卡 */
function createMenuItem(dataUrl, menuName) {
	if (window.frameElement == null) {
		window.open(dataUrl);
		return;
	}

	$('#mini-title').text($.common.trim(menuName));
	var panelUrl = window.frameElement.getAttribute('data-id');
	dataIndex = $.common.random(1, 100),
		flag = true;
	if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
	var topWindow = $(window.parent.document);
	// 选项卡菜单已存在
	$('.menuTab', topWindow).each(function () {
		if ($(this).data('id') == dataUrl) {
			if (!$(this).hasClass('active')) {
				$(this).addClass('active').siblings('.menuTab').removeClass('active');
				$('.page-tabs-content').animate({marginLeft: ""}, "fast");
				// 显示tab对应的内容区
				$('.mainContent .RuoYi_iframe', topWindow).each(function () {
					if ($(this).data('id') == dataUrl) {
						$(this).show().siblings('.RuoYi_iframe').hide();
						window.parent.syncMenuTab(dataUrl);
						return false;
					}
				});
			}
			window.parent.syncMenuTab(dataUrl);
			flag = false;
			return false;
		}
	});
	// 选项卡菜单不存在
	if (flag) {
		var str = '<a href="javascript:;" class="active menuTab" data-id="' + dataUrl + '" data-panel="' + panelUrl + '">' + menuName + ' <i class="fa fa-times-circle"></i></a>';
		$('.menuTab', topWindow).removeClass('active');

		// 添加选项卡对应的iframe
		var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" data-panel="' + panelUrl + '" seamless></iframe>';
		$('.mainContent', topWindow).find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);

		window.parent.$.modal.loading("数据加载中，请稍后...");
		$('.mainContent iframe:visible', topWindow).load(function () {
			window.parent.$.modal.closeLoading();
		});

		// 添加选项卡
		$('.menuTabs .page-tabs-content', topWindow).append(str);
	}
	window.parent.syncMenuTab(dataUrl);
	return false;
}

//日志打印封装处理
var log = {
	log: function (msg) {
		console.log(msg);
	},
	info: function (msg) {
		console.info(msg);
	},
	warn: function (msg) {
		console.warn(msg);
	},
	error: function (msg) {
		console.error(msg);
	}
};

//本地缓存处理
var storage = {
	set: function (key, value) {
		window.localStorage.setItem(key, value);
	},
	get: function (key) {
		return window.localStorage.getItem(key);
	},
	remove: function (key) {
		window.localStorage.removeItem(key);
	},
	clear: function () {
		window.localStorage.clear();
	}
};

// 主子表操作封装处理
var sub = {
	editColumn: function () {
		var count = $("#" + table.options.id).bootstrapTable('getData').length;
		var params = new Array();
		for (var dataIndex = 0; dataIndex <= count; dataIndex++) {
			var columns = $('#' + table.options.id + ' tr[data-index="' + dataIndex + '"] td');
			var obj = new Object();
			for (var i = 0; i < columns.length; i++) {
				var inputValue = $(columns[i]).find('input');
				var selectValue = $(columns[i]).find('select');
				var key = table.options.columns[i].field;
				if ($.common.isNotEmpty(inputValue.val())) {
					obj[key] = inputValue.val();
				} else if ($.common.isNotEmpty(selectValue.val())) {
					obj[key] = selectValue.val();
				} else {
					obj[key] = "";
				}
			}
			params.push({index: dataIndex, row: obj});
		}
		$("#" + table.options.id).bootstrapTable("updateRow", params);
	},
	delColumn: function (column) {
		sub.editColumn();
		var subColumn = $.common.isEmpty(column) ? "index" : column;
		var ids = $.table.selectColumns(subColumn);
		if (ids.length == 0) {
			$.modal.alertWarning("请至少选择一条记录");
			return;
		}
		$("#" + table.options.id).bootstrapTable('remove', {field: subColumn, values: ids});
	}
};

/** 设置全局ajax处理 */
$.ajaxSetup({
	complete: function (XMLHttpRequest, textStatus) {
		if (textStatus == 'timeout') {
			$.modal.alertWarning("服务器超时，请稍后再试！");
			$.modal.enable();
			$.modal.closeLoading();
		} else if (textStatus == "parsererror" || textStatus == "error") {
			$.modal.alertWarning("服务器错误，请联系管理员！");
			$.modal.enable();
			$.modal.closeLoading();
		}
	}
});
